import L_String from "../utils/L_String"
import { KeyUnitStatB, KeyUnitStatHpMpKey, UnitAttr } from "../types/L_Type"


export type UnitBAJAttrVal={
    max:number,
    bitnum:number,
    binary_rel_set:boolean,
    id_prefix:string,
    key:KeyUnitStatB | KeyUnitStatHpMpKey
}

export type UnitBAJAttrType=Record<KeyUnitStatB | KeyUnitStatHpMpKey  ,UnitBAJAttrVal>  //& {indexOfBinKey:Function}



/**单位属性配置表（只包含二进制设置属性或者是JAPI可改变的属性）*/
export const UNIT_BAJ_ATTR_CONFIG:UnitBAJAttrType={
    atk:{
        key:"atk",
        max:131072,
        bitnum:17,
        binary_rel_set:true, //是否使用二进制计算
        id_prefix:'LX'
    },   //绿字攻击力 (不包含光环值)
    def:{
        key:"def",
        max:131072,
        bitnum:17,
        binary_rel_set:true,
        id_prefix:'LD'
    },   //绿字防御力 (不包含光环值)
    aspd:{
        key:"aspd",
        max:2048,
        bitnum:11,
        binary_rel_set:true,
        id_prefix:'LA'
    },   //绿字攻速 (不包含光环值)
    hpr:{
        key:"hpr",
        max:8192,
        bitnum:13,
        binary_rel_set:true,
        id_prefix:'LR'
    },   //生命恢复 
    str:{
        key:"str",
        max:8192,
        bitnum:13,
        binary_rel_set:true,
        id_prefix:'HS'
    },   //绿字力量
    agi:{
        key:"agi",
        max:8192,
        bitnum:13,
        binary_rel_set:true,
        id_prefix:'HA'
    },   //绿字敏捷 
    int:{
        key:"int",
        max:8192,
        bitnum:13,
        binary_rel_set:true,
        id_prefix:'HI'
    },   //绿字智力 
    hp:{
        key:"hp",
        max:-1,
        bitnum:-1,
        binary_rel_set:false,
        id_prefix:'HP'
    },    //绿字生命 japi
    mp:{
        key:"mp",
        max:-1,
        bitnum:-1,
        binary_rel_set:false,
        id_prefix:'MP',
    },    //绿字魔法 japi
    // indexOfBinKey:function(k:string):boolean{
    //     console.log("***********",k)
    //     console.log("***********",UNIT_BAJ_ATTR_CONFIG.hp.key)
    //     // console.log("***********",L_String.getObjJSONStr(UNIT_BAJ_ATTR_CONFIG))
    //     let rs:boolean= UNIT_BAJ_ATTR_CONFIG.hp.key!=k && UNIT_BAJ_ATTR_CONFIG.mp.key!=k  && (UNIT_BAJ_ATTR_CONFIG as any)[k]!=null
    //     return rs;
    // }
}

export function indexOfBinAttrKey(k:string):boolean{
   // console.log("***********",k)
    return UNIT_BAJ_ATTR_CONFIG.hp.key!=k && UNIT_BAJ_ATTR_CONFIG.mp.key!=k  && (UNIT_BAJ_ATTR_CONFIG as any)[k]!=null
}







